package com.example.demo.common.utils;

/**
 * 经纬度格式化工具类
 */
public class LonLatUtil {


    /**
     * 小数格式转度分秒格式
     * @param value 小数值
     * @return
     */
    public static String toDuFenMiao(double value) {
        // 小数字符串
        String str = Double.valueOf(value).toString();
        String[] arr = str.split("\\.");
        if(arr != null && arr.length > 0) {
            // 度
            String data = "";
            String du = arr[0];
            data += du + "°";
            if(arr.length == 2) {
                str = "0." + arr[1];
                Double tmp = Double.parseDouble(str) * 60;
                str = tmp.toString();
                arr = str.split("\\.");
                if(arr != null && arr.length > 0) {
                    // 分
                    String fen = arr[0];
                    data += fen + "′";
                    if(arr.length == 2) {
                        str = "0." + arr[1];
                        tmp = Double.parseDouble(str) * 60;
                        str = tmp.toString();
                        arr = str.split("\\.");
                        if(arr != null && arr.length > 0) {
                            // 秒
                            String miao = arr[0];
                            data += miao + "″";
                        }
                    }
                }
            }
            return data;
        }
        return "";
    }

    /**
     * 度分秒格式转小数格式
     * @param value 度分秒值
     * @return
     */
    public static Double toDouble(String value) {
        String[] arr = value.split("°");
        if(arr != null && arr.length > 0) {
            // 度
            Double data = Double.parseDouble(arr[0]);
            if(arr.length == 2) {
                value = arr[1];
                arr = value.split("′");
                if(arr != null && arr.length > 0) {
                    // 分
                    data += (Double.parseDouble(arr[0]) / 60);
                    if(arr.length == 2) {
                        value = arr[1];
                        arr = value.split("″");
                        if(arr != null && arr.length > 0) {
                            // 分
                            data += (Double.parseDouble(arr[0]) / 3600);
                        }
                    }
                }
            }
            return data;
        }
        return 0d;
    }

}
